package org.neg.curso;



import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.conexao.ConnectionHandler;

/**
 *
 * @author luiz.perez
 */
public class Turma {
    private String horario, data, sala, instrutor;
    private int idCurso, ano, mes, dia;
    private int[] listaSelecionados;
    
    private ConnectionHandler ch = new ConnectionHandler();
    private Connection conn = null;
    private PreparedStatement stmt = null;
    private ResultSet rst = null;
    
    public boolean criaTurma(int idCurso, String horario, String instrutor)
    {
        int idTurma = 1;
        data = ""+dia+"-"+mes+"-"+ano;
        conn = ch.Connect();
        try {
            // Statement SQL
            stmt = conn.prepareStatement("INSERT INTO ADMINDB2.\"Turma\" (\"IdCurso\", \"Horario\", \"Data\", \"Sala\", \"Instrutor\") VALUES (?, ?, ?, ?, ?)");
            
            // Passagem de variaveis
            stmt.setInt(1, idCurso);
            stmt.setString(2, horario);
            // Conversao da data de nascimento
            if(data == null || "".equals(data))
                stmt.setNull(3, java.sql.Types.DATE); // Se for nula ou vazia colocamos um objeto SQL do tipo data com o valor null no campo do statement.
            else
            {
                try {
                    java.sql.Date dtConvertida = new java.sql.Date(new SimpleDateFormat("dd-MM-yyyy").parse(data).getTime());
                    System.out.println("Data convertida com sucesso." + dtConvertida.toString());
                    stmt.setDate(3, dtConvertida);
                } catch (ParseException ex) {
                    System.out.println("Falha em converter a data.");
                    Logger.getLogger(Turma.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            stmt.setString(4, sala);
            stmt.setString(5, instrutor);
            System.out.println("Statement preparado com sucesso.");
        } catch (SQLException ex) {
            Logger.getLogger(ConnectionHandler.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Criacao de statement falhou.");
            return false;
        }
        try {
            stmt.executeUpdate();
            System.out.println("Statement executado com sucesso.");
        } catch (SQLException ex) {
            Logger.getLogger(ConnectionHandler.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Falha na execucao do statement.");
            return false;
        }
        try {
            stmt = conn.prepareStatement("SELECT identity_val_local() from ADMINDB2.\"Turma\"");
        } catch (SQLException ex) {
            Logger.getLogger(Turma.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            rst = stmt.executeQuery();
            rst.next();
            idTurma = rst.getInt(1);
        } catch (SQLException ex) {
            Logger.getLogger(Turma.class.getName()).log(Level.SEVERE, null, ex);
        }
        for (int i = 0; i < listaSelecionados.length; i++) {
            try {
                // Statement SQL
                stmt = conn.prepareStatement("INSERT INTO ADMINDB2.\"TurmaUsuario\" (\"IdUsuario\", \"IdTurma\") VALUES (?, ?)");

                // Passagem de variaveis
                stmt.setInt(1, listaSelecionados[i]);
                stmt.setInt(2, idTurma);

            } catch (SQLException ex) {
                Logger.getLogger(ConnectionHandler.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println("Criacao de statement falhou.");
                return false;
            }
            try {
                stmt.executeUpdate();
                System.out.println("Statement executado com sucesso.");
            } catch (SQLException ex) {
                Logger.getLogger(ConnectionHandler.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println("Falha na execucao do statement.");
                return false;
            }   
        }
        return ch.Disconnect();
    }
    
    public boolean pesquisaCursos()
    {
        return true;
    }

    public String getHorario() {
        return horario;
    }

    public void setHorario(String horario) {
        this.horario = horario;
    }

    public int getIdCurso() {
        return idCurso;
    }

    public void setIdCurso(int idCurso) {
        this.idCurso = idCurso;
    }

    public String getInstrutor() {
        return instrutor;
    }

    public void setInstrutor(String instrutor) {
        this.instrutor = instrutor;
    }

    public String getSala() {
        return sala;
    }

    public void setSala(String sala) {
        this.sala = sala;
    }

    public int[] getlistaSelecionados() {
        return listaSelecionados;
    }

    public void setlistaSelecionados(int[] listaSelecionados) {
        this.listaSelecionados = listaSelecionados;
    }

    public int getAno() {
        return ano;
    }

    public void setAno(int ano) {
        this.ano = ano;
    }

    public int getDia() {
        return dia;
    }

    public void setDia(int dia) {
        this.dia = dia;
    }

    public int getMes() {
        return mes;
    }

    public void setMes(int mes) {
        this.mes = mes;
    }
    
    
    
}
